AWS Batch の実行時間が実行タイムアウトを超えている理由を教えてください
困っていた内容
AWS Batch で実行タイムアウトを10分に設定しています。
先日、ジョブの処理時間を確認したところ、約50分経過していました。タイムアウトはベストエフォートであることは承知していますが、数十分の差があります。
そもそも設定に誤りがないか、また他の理由があれば教えてください。
タイムアウトの終了はベストエフォートベースで処理されます。ジョブ試行がタイムアウトするタイミングでタイムアウトが終了するとは限りません (数秒長くかかることがあります)。
どう対応すればいいの?
ジョブの試行回数を確認してください。
※画像の場合は10回
AWS Batch は再試行戦略をサポートしており指定した条件で実行が失敗すると、自動的にRUNNABLE
状態に戻り、STARTING
状態を経由して再試行(RUNNING
)されます。AWS Batch の実行タイムアウトはRUNNING
状態からの経過時間となるため *1、再試行が行われると、タイマーもリセットされ、最終的な合計処理時間はタイムアウトを超過する場合があります。
Understanding the AWS Batch termination process | AWS HPC Blogより引用
そのため、再試行戦略および再試行の実施有無によっては、合計の処理時間が実行タイムアウトを超える可能性にご注意ください。また、必要に応じて再試行戦略の変更もご検討ください。
参考資料
タイマーはジョブが実行状態になったときに開始されることに注意してください。
脚注
- 正確には
startedAt
からの経過時間 ↩